关于容器监控,这3种工具你可能用得上
识别二维码报名活动
8月19日,来自微软、数人云、京东、当当网的四位IT老兵,《一起吹响Container+集结号》,看Serverless、DevOps、微服务、CI/CD、分布式调度任务等技术,在各个场景中与Container发生的碰撞与交互。
数人云技术总监老庞在之前的文章中《解惑|你是否为容器监控操碎了心?》提到:没有监控如同闭眼开车,今天小数给大家分享三种工具,轻松搞定容器监控~
本文将介绍如何为DevOps/Docker环境创建一个有趣且包含时间时间序列指标的监控环境,使用Garafana作为展示仪表盘,数据库为influxDb,收集指标的工具有很多,如Collectd,Graphite等,这里选择Telegraf(InfluxData公司的产品)
安装Grafana
▼
建立一个持久存储卷,可以保留升级版本、销毁重建Grafana容器时的配置。
# docker run -d -v /var/lib/grafana --name grafana-storage busybox:latest创建并启动Grafana容器,此时已安装完毕等待配置。
#docker create \
--name = grafana \
-p 3000:3000 \
--volumes-from grafana-storage \
-e "GF_SECURITY_ADMIN_PASSWORD=<<you-password>>" \
grafana/grafana
Docker升级脚本
若没有Grafana容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops
自动启动映像—创建Systemd启动脚本
#vi /lib/systemd/system/grafana.service
[Unit]
Description=grafana container
Requires=docker.service
After=docker.service
[Service]
User=foxutech
Restart=on-failure
RestartSec=45
ExecStart=/usr/bin/docker start -a grafana
ExecStop=/usr/bin/docker stop -t 2 grafana
[Install]
WantedBy=multi-user.target
设置开机启动。
#systemctl enable grafana.service
现在启动。
#systemctl start grafana
了解更多关于Linux上创建InfluxDB和Grafana容器,请参阅:http://foxutech.com/create-influxdb-and-grafana-containers-on-linux/
安装InfluxDB
▼
创建本地存储,目的是避免在任何情况下容器被删除导致的数据丢失。
#mkdir -p / monitoring / influxdb / conf /
#mkdir -p / monitoring / influxdb / db /
检验文件夹所有者及读取权限(可选)
不是必备项,取决于创建上述文件夹使用的用户名及Linux发行版本,若想确保此路径由启动Docker服务的用户所有,请将下面命令中的User替换为实际用户名:
#chown user:user -R /docker
生成默认配置项
生成后仔细校验,一些重要的选项需要去注意。
#docker run --rm influxdb influxd config> /monitoring/influxdb/conf/influxdb.conf
创建并启动InfluxDB容器
# docker create \
--name influxdb \
-e PUID=1212 -e PGID=1212 \
-p 8083:8083 -p 8086:8086 \
-v /monitoring/influxdb/conf/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
-v /monitoring/influxdb/db:/var/lib/influxdb \
influxdb -config /etc/influxdb/influxdb.conf
# docker start influxdb
创建测试数据库
查看本地 localhost:8083上的实例。下面需要创建测试的数据库,只需进入查询区域并输入:
CREATE DATABASE test
Docker升级脚本
若没有InfluxDB容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops
自动启动映像—创建Systemd启动脚本
#vi /lib/systemd/system/grafana.service
[Unit]
Description=influxdb container
Requires=docker.service
After=docker.service
[Service]
User=foxutech
Restart=on-failure
RestartSec=45
ExecStart=/usr/bin/docker start -a influxdb
ExecStop=/usr/bin/docker stop -t 2 influxdb
[Install]
WantedBy=multi-user.target
设置开机启动
#systemctl enable influxdb.service
马上启动测试
#systemctl start influxdb
Docker统计
▼
当Docker很快成为日常工作流程的一部分,为了快速部署常见部署和频繁升级常用包,同时保持配置文件和卷存储完整性,本文作者在单个服务器中的两台VM虚拟机上跑了近15个容器实例,启动新的软件实测最后移到垃圾箱没有任何痕迹。
为了实现这一点,要去部署Telegraf容器,实际上,它是大多数自定义脚本极好的替代品,如涉及到SNMP数据时,可以让Telegraf获取所有数据,并将数据发送到InfluxDB。
用Docker安装Telegraf
创建Docker卷存储位置
#mkdir -p / monitoring / telegraf /
生成默认配置文件
#docker run --rm telegraf -sample-config > /monitoring/telegraf/telegraf.conf
修改此文件以满足您的实际情况,在配置文件顶部是很多环境变量相关的选项。特别应查找这两项。
输出插件
# Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
urls = ["http://localhost:8086"] # required
database = "telegraf" # required
precision = "s"
retention_policy = "default"
write_consistency = "any"timeout = "5s"
Docker 配置
[[inputs.docker]]
## Docker Endpoint
## To use TCP, set endpoint = "tcp://[ip]: [port]"
## To use environment variables (ie, docker-machine), set endpoint = "ENV"
#endpoint = "unix:///var/run/docker.sock"
#you may need to use the actual IP here
endpoint = "tcp://localhost:2375"
## Only collect metrics for these containers, collect all if empty
container_names = []
## Timeout for docker list, info, and stats commands
timeout = "30s"
Docker升级脚本
若没有Telegraf容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops
自动启动镜像 - 创建一个Systemd启动脚本
#vi /lib/systemd/system/telegraf.service
[Unit]
Description=telegraf container
Requires=docker.service
After=docker.service
[Service]
User=foxutech
Restart=on-failure
RestartSec=45Exec
Start=/usr/bin/docker start -a telegraf
ExecStop=/usr/bin/docker stop -t 2 telegraf
[Install]
WantedBy=multi-user.target
设置开机启动。
# systemctl enable telegraf.service
启动并测试。
# systemctl start telegraf
一旦Telegraf启动,您应该看到数据打入到InfluxDB数据库。
以上是用InfluxDB、Grafana、Telegraf这三种工具为容器创建时间序列指标的监控环境,当然,没有最好,只有最适合自身及团队的工具,做好监控,能及时并解决发生的问题,让应用处于最优的状态运行。
原文作者:motoskia
原文链接:http://foxutech.com/monitor-docker-environment/
推荐阅读:
史上最全|35个平台、框架、数据库细说什么是Serverless
点击阅读原文,报名活动